/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.proyecto.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import pe.edu.upc.dew.proyecto.bd.Conexion;
import pe.edu.upc.dew.proyecto.model.Medico;


/**
 *implementación del Objeto MedicoDao
 * programada bajo spring framework
 * con inyección de dependencias.
 * @author Fernando
 */
public class MedicoDaoImpl implements MedicoDao {
    /**
     * Implemntación del metodo de la interfaz asociada
     * Busca en la base de datos cual es el médico según el código de persona
     * @param copersona el códego de persona del médico
     * @return Objeto Medico
     */
    public Medico getMedicoPorCodigo(int copersona){

        Medico medico = null;

        Connection connection = null;
        Statement st = null;
        ResultSet rsPersona = null;
        ResultSet rsMedico = null;


        try{
            connection= Conexion.obtenerConexion();
            st = connection.createStatement();
            rsMedico = st.executeQuery("select * from Medico where copersona ="+ Integer.toString(copersona));
            if (rsMedico.next()){
                medico = new Medico();
                medico.setCoPersona(copersona);
                medico.setEspecialidad(rsMedico.getString("especialidad"));
                medico.setCoColeMed(rsMedico.getString("cocolemed"));

                rsPersona = st.executeQuery("select * from Persona where copersona ="+ Integer.toString(copersona));

                if (rsPersona.next()){

                    medico.setDocIdentidad(rsPersona.getString("docidentidad"));
                    medico.setApePaterno(rsPersona.getString("ApePaterno"));
                    medico.setApeMaterno(rsPersona.getString("ApeMaterno"));
                    medico.setNombre1(rsPersona.getString("Nombre1"));
                    medico.setNombre2(rsPersona.getString("Nombre2"));
                    medico.setSexo(rsPersona.getString("Sexo"));
                    medico.setFechaNacimiento( rsPersona.getDate("FechaNacimiento") );
                    medico.setDireccion(rsPersona.getString("Direccion"));
                    medico.setTelefono(rsPersona.getString("Telefono"));
                }
            }
        }
        catch(Exception e){
        e.printStackTrace();
        }
        finally {
            Conexion.closeResultSet(rsPersona);
            Conexion.closeResultSet(rsMedico);
            Conexion.closeStatement(st);
            Conexion.closeConnection(connection);
        }

        return medico;
    }
    /**
     * Implementación del metodo de la interfaz asiciada
     * Busca el Medico por número de colegio médico
     *      *
     * @param cocolemed Numero de colegio médico (String)
     * @return Objeto Medico
     */
    public Medico getMedicoPorCodColMedico(String cocolemed){
        Medico medico = null;

        return medico;
    }
}
